using System;

using SBPweb.Data;

namespace SBPweb.PROvibe.Resources.Entities
{
	public class Template : Entity, ITemplate
	{
		
		#region Private fields

		private const string FIELDNAME_Id = "Id";
		private const string FIELDNAME_Name = "Name";
        private const string FIELDNAME_AssemblyStreamId = "AssemblyStreamId";

		#endregion

		#region Constructor logic

		static Template()
		{
			RegisterEntityTypeToColumns(typeof(Template));
		}

		public Template()
            : base(null)
        {
		}

        public Template(Template entity)
            : base(entity)
        {
        }

		#endregion

		#region Public property accessors

		public virtual int Id
		{
			get
			{
				return GetValue<Int32>(FIELDNAME_Id);
			}
			set
			{
				SetValue<Int32>(FIELDNAME_Id, value);
			}
		}

		public virtual string Name
		{
			get
			{
				return GetValue<String>(FIELDNAME_Name);
			}
			set
			{
				SetValue<String>(FIELDNAME_Name, value);
			}
		}

        public virtual int AssemblyStreamId
        {
            get
            {
                return GetValue<int>(FIELDNAME_AssemblyStreamId);
            }
            set
            {
                SetValue<int>(FIELDNAME_AssemblyStreamId, value);
            }
        }

		#endregion

		#region Overridden methods

		public override object Clone()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        public int CompareTo(IEntity other)
        {
            throw new NotImplementedException();
        }

        public bool Equals(IEntity other)
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}
